package Stack;

import java.util.Arrays;
import java.util.Stack;

/**
 * User:浪尘
 * Date:2022-09-25
 * Time:11:21
 */
public class GetMyStack {
    public int[] num;
    public int usedSize;

    public GetMyStack() {
        this.num = new int[10];
    }

    /**
     * 压栈
     *
     * @param val
     * @return
     */
    public int push(int val) {
        if (isFull()) {//满了就扩容
            num = Arrays.copyOf(num, 2 * num.length);
        }
        this.num[usedSize] = val;
        usedSize++;
        return val;
    }

    public boolean isFull() {//判断栈满否
        return usedSize == num.length;
    }


    /**
     * 出栈
     */
    public int pop() {
        if (empty()) {
            throw new MyEmptyStackException("栈空了！");
        }
        return num[--usedSize];
    }


    /**
     * peek()
     */
    public int peek(){
        return num[usedSize-1];
    }


    /**
     * 判断栈是否为空
     *
     * @return
     */
    public boolean empty() {
        return usedSize == 0;
    }



    /**
     * 括号匹配问题
     * @param s
     * @return
     */
//    public boolean isValid(String s) {
//        Stack<Character> stack = new Stack();
//        for (int i = 0; i < s.length; i++) {
//            char ch = s.charAt(i);
//            //判断是不是左括号
//            if (ch == '(' || ch == '[' || ch == '{') {
//                stack.push(ch);
//            } else {
//                if (stack.empty()) {
//                    //遇到了右括号，此时不匹配！
//                    return false;
//                }
//            }
//            char ch2 = stack.peek();
//            if (ch2 == '[' && ch == ']' || ch2 == '(' && ch == ')' || ch2 == '{' && ch == '}') {
//                stack.pop();
//            } else {
//                return false;
//            }
//        }
//    }
//    //当字符串遍历完成了，但是栈不为空，说明左括号还在栈当中没有匹配完成
////    if(!stack.empty())
////    {
////        return false;
////    }
////    return true;
//
//    /**
//     *得到栈顶元素
//     */
//    public int peek(){
//        if(empty()){
//            throw  new MyEmptyStackException("栈空了！");
//        }
//        return num[usedSize-1];
//    }
//
//    public static void main(String[] args) {
//        GetMyStack myStack = new GetMyStack();
//        myStack.push(4);
//        myStack.push(3);
//        myStack.push(2);
//        myStack.push(1);
//        //myStack.pop();
//        int n1 = myStack.peek();
//        System.out.println(n1);
}

